#ifndef __BSP_UART_H__
#define __BSP_UART_H__

#ifdef __cplusplus
extern "C"
{
#endif


#include "gd32f4xx.h"
#include <stdio.h>
#include <stdbool.h>

#define COM_4G 				USART5
#define COM_RS232_NFC		USART1
#define COM_RS232_LCD 		UART6
#define COM_RS232_Debug 	UART3
#define COM_RS485_1 		USART0
#define COM_RS485_2 		USART2

#define RX_BUFF_SIZE    (1024 + 30)
#define TX_BUFF_SIZE    (1200)  /*注意: dma 数据大小要被4整除*/

typedef struct
{
    uint8_t 	buf[RX_BUFF_SIZE];
	uint32_t  	cnt;	             // rx 接收数据计数
	bool    	idle_flg;            // 已收到一帧数据,空闲状态
} stUART_RX;

typedef struct
{
    stUART_RX   uart_rx;
	uint32_t	uartx_periph;  // USART1,or UART4,等
} stUARTx;

extern stUARTx RS485_1;
extern stUARTx RS485_2;
extern stUARTx RS232_Debug;
extern stUARTx RS232_LCD;
extern stUARTx RS232_NFC;
extern stUARTx Uart_4G;

void BSP_Uart0_Config(uint32_t baudrate);
void BSP_Uart1_Config(uint32_t baudrate);
void BSP_Uart2_Config(uint32_t baudrate);
void BSP_Uart3_Config(uint32_t baudrate);
void BSP_Uart5_Config(uint32_t baudrate);
void BSP_Uart6_Config(uint32_t baudrate);

void UartX_Put_Char(uint32_t usart_periph, uint8_t ch);
void UartX_Put_String(uint32_t usart_periph, char *pStr);
void UartX_Put_Array(uint32_t usart_periph, uint8_t *pStr, int Lenth);

#ifdef __cplusplus
}
#endif


#endif

